package data_access;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;

import modelo.Paciente;

public class PacientesManager
{
	public static Paciente getPacienteById(int id)
	{
		Connection c = ConnectionFactory.getConnection();
		try
		{
			PreparedStatement ps = c
					.prepareStatement("SELECT altura, fechaNacimiento, nombre, peso, sexo, dni FROM Pacientes WHERE id = ?");
			ps.setInt(1, id);
			ResultSet rs = ps.executeQuery();
			
			if (rs.next())
			{
				Paciente p = new Paciente();

				float altura = rs.getFloat(1);
				p.setAltura(altura);

				Date fechaNacimiento = rs.getDate(2);
				p.setFecha_Nac(fechaNacimiento);

				String nombre = rs.getString(3);
				p.setNombre(nombre);

				float peso = rs.getFloat(4);
				p.setPeso(peso);

				String sexo = rs.getString(5);
				p.setSexo(sexo);

				String dni = rs.getString(6);
				p.setDNI(dni);

				p.setId(id);
				
				return p;
			}			
		}
		catch (Exception e)
		{
			e.printStackTrace();
		}
		finally
		{
			ConnectionFactory.closeConnection(c);
		}

		return null;
	}

	public Collection<Paciente> getAllPacientes()
	{
		Connection c = ConnectionFactory.getConnection();
		try
		{
			PreparedStatement ps = c
					.prepareStatement("SELECT altura, fechaNacimiento, nombre, peso, sexo, dni FROM Pacientes");
			ResultSet rs = ps.executeQuery();

			Collection<Paciente> pacientes = new ArrayList<Paciente>();
			while (rs.next())
			{
				Paciente p = new Paciente();

				float altura = rs.getFloat(1);
				p.setAltura(altura);

				Date fechaNacimiento = rs.getDate(2);
				p.setFecha_Nac(fechaNacimiento);

				String nombre = rs.getString(3);
				p.setNombre(nombre);

				float peso = rs.getFloat(4);
				p.setPeso(peso);

				String sexo = rs.getString(5);
				p.setSexo(sexo);

				String dni = rs.getString(6);
				p.setDNI(dni);

				pacientes.add(p);
			}

			return pacientes;
		}
		catch (Exception e)
		{
			e.printStackTrace();
		}
		finally
		{
			ConnectionFactory.closeConnection(c);
		}

		return null;
	}
}
